//
// Description: 作业批改
// Created by Loading on 2021/5/14.
//

// 两个字符串A和B，要求：
// 1、 如果仅需要将A中字符删除一些，就可以使A、B相同，则输出automaton；
// 2、 如果仅需要将A中字符交换一些顺序，就可以使A、B相同，则输出array
// 3、 如果A中字符既需要删除也需要交换顺序才能使A、B相同，则输出both
// 4、 如果不满足上述三种情况，则输出need tree

// Input
// 共两行
// 第一行用户的结果字符串A
// 第二行标准答案字符串B
// 为了减少字符串操作，AB都是小写英文字母组成，且长度不超过100；
// 另外需要你帮忙的分类的一定是用户答案和保准答案不完全一样的，所以不必考虑AB相同的情况
//
// Output
// 共一行，输出上述结果

// Examples
//
// Input
// atomato
// tomato
//
// Output
// automaton

// Input
// array
// arary
//
// Output
// array

// Input
// both
// hot
//
// Output
// both

// Input
// need
// tree
//
// Output
// need tree

#include <bits/stdc++.h>

using namespace std;

int main() {
    string s1, s2;
    cin >> s1 >> s2;

    string temps1 = s1;
    string temps2 = s2;
    string temp = s1;

    int index = -1;
    bool flag = false;
    //如果s2中的每个字符相对顺序都可以在s1中保持不变，则仅需删除就可以完成
    for (auto &c : s2) {
        temp = temp.substr(index + 1);
        int pos = temp.find(c);
        if (pos != string::npos) {
            index = pos;
        } else {
            flag = true;
            break;
        }
    }
    if (!flag) {
        cout << "automaton" << endl;
        return 0;
    }

    if (s1.size() == s2.size()) {
        sort(temps1.begin(), temps1.end());
        sort(temps2.begin(), temps2.end());
        //排序后相等说明仅可以调整位置就可以使两者相等，否则不满足
        if (temps1 == temps2) {
            cout << "array" << endl;
        } else {
            cout << "need tree" << endl;
        }
    } else if (s1.size() > s2.size()) {
        unordered_map<char, int> m1;
        unordered_map<char, int> m2;
        for (auto &c : s1) {
            m1[c]++;
        }
        for (auto &c : s2) {
            m2[c]++;
        }
        for (auto &it : m2) {
            //s2中的每个字符数量都要大于等于在s1中的对应字符数量，否则不满足
            if (m1[it.first] < it.second) {
                cout << "need tree" << endl;
                return 0;
            }
        }

        cout << "both" << endl;
    } else {
        cout << "need tree" << endl;
    }
}